// #ifndef BUTTON_H
// #define BUTTON_H

// #include <OneButton.h>
// #include "config.h"
// #include <ESP32Encoder.h>
// #include <freertos/FreeRTOS.h>
// #include <freertos/queue.h>

// // 定义按钮事件类型
// typedef enum {
//     EVENT_NONE = 0,
//     EVENT_BUTTON_CLICK,        // 普通按钮单击
//     EVENT_BUTTON_DOUBLE_CLICK, // 普通按钮双击
//     EVENT_BUTTON_LONG_PRESS,   // 普通按钮长按
//     EVENT_ENCODER_CLICK,       // 编码器按钮单击
//     EVENT_ENCODER_DOUBLE_CLICK,// 编码器按钮双击
//     EVENT_ENCODER_LONG_PRESS,  // 编码器按钮长按
//     EVENT_ENCODER_ROTATE       // 编码器旋转
// } ButtonEventType;

// // 定义事件结构体
// typedef struct {
//     //事件类型
//     ButtonEventType type;
//     int value;  // 旋转时的数值
//     uint32_t timestamp;  // 事件发生时间
// } ButtonEvent;

// // 创建 OneButton 对象，连接到 button_pin 引脚，启用内部上拉电阻
// extern OneButton button;
// extern OneButton button2;
// extern ESP32Encoder encoder;  // 只使用一个编码器

// // 事件队列句柄
// extern QueueHandle_t buttonEventQueue;

// // 屏幕刷新标志位
// extern volatile bool need_screen_refresh;

// // 按钮事件处理函数
// void onDoubleClick();    // 双击事件函数
// void click();            // 单击事件函数
// void longclick();        // 长按事件函数
// void init_button();
// // 按钮任务函数：使用 FreeRTOS 处理按钮状态
// void buttonTask(void *pvParameters);

// // 新增：事件处理函数
// void eventProcessingTask(void *pvParameters);
// void handleButtonEvent(ButtonEvent *evt);
// void handleEncoderRotation(int value);

// #endif

/*
    普通按键检测
*/

#ifndef BUTTON_H
#define BUTTON_H

#include <Arduino.h>
#include <Button.h>

// 初始化按钮系统
void init_button();

// 按钮任务函数
void buttonTask(void *pvParameters);

#endif
